跳到主要内容

计划前瞻 API

提示

Plan-ahead API 用于提前发送调度。有关实时控制,请参见 Live MQTT control

你需要的

  1. 一个 API 用户名和密码。你可以使用你的 Insights 账户,或者通过发送电子邮件到 support@eniris.be 请求一个 API 账户,清楚地提及你的设备序列号。
  2. Python 开发环境(或任何其他 MQTT 客户端)。本指南使用一个用 Python 编写的基本示例,帮助你开始使用 MQTT 和发送命令。我们推荐使用 Python,因为它易于使用,但任何其他 MQTT 客户端也是支持的。

首次配置(新用户的起始点)

1. 找到你想控制的设备的设备 ID

设备 ID(也称为 nodeId)是我们系统中每个设备的唯一标识符,用于向设备发送命令。

目前,获取你的 ID 最简单的方法是导航至: http://<CONTROLLER_IP>/debugger

展开“元数据”框,并记录下你想控制的所有设备的 nodeId。你将在后面的步骤中需要这些 ID。

图片 1

2. 添加你的设备

登录到调试界面,确保设备已添加SmartgridOne Controller

3. 添加 API 外部信号

图片 1
图片 1
图片 1
图片 1

4. 输入收集器令牌

在此处输入 SmartgridOne Controller 的序列号,然后单击提交。

5. 选择要包含的设备

在此页面上,您可以选择包括/排除设备以进行远程控制。确保标记您希望包含的设备的所有复选框。

图片 1

6. 数据源已添加

远程控制接口现在已在 SmartgridOne Controller 上激活。你现在可以开始向设备发送命令。

警告

不要忘记在 SmartgridOne Controller 上设置后备模式!除了您发送的外部 API 信号外,还需要配置本地控制模式。本地控制在 SmartgridOne Controller 失去互联网连接或其他原因导致 API 信号无法到达 SmartgridOne Controller 时用作后备。

使用 Python 发送远程控制命令

下面是一个如何控制太阳能或电池的 Python 代码片段。

提示

查看文档 应用指南 - 远程设定点 以获取更完整的说明和所有策略。

所需软件包: pip install eniris

# %% Imports
from eniris import ApiDriver
from eniris.point import Point
from eniris.point.writer import (PointDuplicateFilter, DirectPointToTelemessageWriter)
from eniris.telemessage.writer import PooledTelemessageWriter
from datetime import datetime, timezone

# %% Constants
COMMAND_UNTIL = '2024-04-16T10:26:00+02:00' # YYYY-MM-DDTHH:MM:SS+00:00
SN = '<REPLACE>'
COMMAND = fields = {'policy': 2, 'powerSetpoint_W': 0.0} # 0: 默认(自用);2: 跟随设定点


# %% Start curtailment
curtail_until = datetime.fromisoformat(COMMAND_UNTIL).astimezone(timezone.utc)
print(f'Following command until: {curtail_until}')
apiUsername = "<REPLACE>"
apiPassword = "<REPLACE>"

# Create an API drivers and a point writer with the desired functionality
driver = ApiDriver(apiUsername, apiPassword)
writer = PointDuplicateFilter(
DirectPointToTelemessageWriter(
PooledTelemessageWriter(
authorizationHeaderFunction=driver.accesstoken,
params={"u": SN},
)
)
)
namespace = {'database': 'SGC', 'retentionPolicy': 'rp_one_s'}
tags = {
"serialNr": SN,
"nodeId": '<REPLACE>',
}

writer.writePoints([Point(namespace, 'remoteControlSignals', curtail_until, tags, fields)])
writer.flush()
print('Dispatched')

请特别注意:

  • 'COMMAND_UNTIL':这是一个具有时区意识的时间戳,表示命令的结束时间。
  • 'COMMAND':这应根据你希望执行的命令进行更改。
    • 例如:对于电池,策略 2和 powerSetpoint_W 为 1000 将以 1 kW 充电电池。
    • 对于太阳能,策略 2 和 powerSetpoint_W 为 0 将禁用太阳能生产。
    • 在命令结束后,它将自动回退至默认控制(如在 SmartgridOne Controller 中配置)。
    • (支持更高级的策略,但尚未添加到本指南中)
  • 'tags' 变量:这应根据 SmartgridOne Controller SN 进行更改,其中 nodeId 应设置为在本教程早期步骤中提取的设备 ID。
提示

查看文档 应用指南 - 远程设定点 以获取更完整的说明和所有策略。